package main

import (
	"fmt"
	"github.com/zinx/ziface"
	"github.com/zinx/znet"
)

/**
* 基于zinx框架开发的应用端程序
* @Author: WuZhiHang
* @Date: 2020/10/15 10:03 下午
 */

// 简单ping测试,自定义路由
type PingRouter struct {
	znet.BaseRouter
}

// 处理conn业务之前的钩子方法
//func (p *PingRouter) PreHandle(request ziface.IRequest) {
//	fmt.Println("Call PreHandle")
//	_, err := request.GetConnection().GetTCPConnection().Write([]byte("before ping\n"))
//	if err != nil {
//		fmt.Println("call back before err ")
//	}
//}

// 处理业务方法
func (p *PingRouter) Handle(request ziface.IRequest) {
	fmt.Println("recv From client: msgId:", request.GetMsgId(), "msgData=", string(request.GetData()))

	// 读取客户端数据
	if err := request.GetConnection().SendMsg(1, []byte("ping, ping, ping")); err != nil {
		fmt.Println(err)
	}
}

// 处理conn业务之后的钩子方法
//func (p *PingRouter) PostHandle(request ziface.IRequest) {
//	fmt.Println("Call PostHandle")
//	_, err := request.GetConnection().GetTCPConnection().Write([]byte("after ping\n"))
//	if err != nil {
//		fmt.Println("call back PostHandle err")
//	}
//}

func main() {
	// 创建一个server句柄，使用zinxapi
	s := znet.NewServer("[zinx V0.1]")
	s.AddRouter(0, &PingRouter{})
	// 启动server
	s.Serve()
}
